QuickOPC User's Guide and Reference
ObtainNewCertificate(IEasyUAApplication,UAEndpointDescriptor,IProgress<String>) Method
Example 



OpcLabs.EasyOpcUA Assembly > OpcLabs.EasyOpc.UA.Application.Extensions Namespace > IEasyUAApplicationExtension Class > ObtainNewCertificate Method : ObtainNewCertificate(IEasyUAApplication,UAEndpointDescriptor,IProgress<String>) Method
The OPC UA client application object that will perform the operation.
The GDS endpoint acting as OPC UA certificate manager (CM).
A provider for progress updates.
Obtains a new application instance certificate from the certificate manager, and stores it for subsequent usage.
Syntax
'Declaration
 
<ExtensionAttribute()>
<NotNullAttribute()>
Public Overloads Shared Function ObtainNewCertificate( _
   ByVal application As IEasyUAApplication, _
   ByVal gdsEndpointDescriptor As UAEndpointDescriptor, _
   ByVal progress As IProgress(Of String) _
) As IPkiCertificate
'Usage
 
Dim application As IEasyUAApplication
Dim gdsEndpointDescriptor As UAEndpointDescriptor
Dim progress As IProgress(Of String)
Dim value As IPkiCertificate
 
value = IEasyUAApplicationExtension.ObtainNewCertificate(application, gdsEndpointDescriptor, progress)

Parameters

application
The OPC UA client application object that will perform the operation.
gdsEndpointDescriptor
The GDS endpoint acting as OPC UA certificate manager (CM).
progress
A provider for progress updates.

Return Value

Returns the certificate obtained from the certificate manager.
Exceptions
ExceptionDescription
A null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.
An operation that the thread was execution has been cancelled.
The OPC UA operation has failed.
Remarks

The operation is synchronous. It can take considerable time to execute, because it involves multiple steps, and waiting for a finalization of the request by the GDS (see the OpcLabs.EasyOpc.UA.Gds.IEasyUACertificateManagement.FinishRequest method).

For an alternative based on asynchronous programming model (APM, System.IAsyncResult) pattern, see the BeginObtainNewCertificate method and related extension methods.

For a task-based asynchronous programming pattern alternative, see the ObtainNewCertificateAsync(IEasyUAApplication,UAEndpointDescriptor) extension method and its overloads.

Example
// Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage,
// with progress reporting.

using System;
using Microsoft.Extensions.DependencyInjection;
using OpcLabs.BaseLib.Security.Cryptography.PkiCertificates;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.Application;
using OpcLabs.EasyOpc.UA.Application.Extensions;
using OpcLabs.EasyOpc.UA.Extensions;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UADocExamples.Application._IEasyUAClientApplication
{
    partial class ObtainNewCertificate
    {
        public static void Progress()
        {
            // Define which GDS we will work with.
            UAEndpointDescriptor gdsEndpointDescriptor = 
                ((UAEndpointDescriptor)"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer")
                .WithUserNameIdentity("appadmin", "demo");

            // Obtain the client application service.
            var client = new EasyUAClient();
            IEasyUAClientApplication clientApplication = client.GetService<IEasyUAClientApplication>();

            // Display which application we are about to work with.
            Console.WriteLine("Application URI string: {0}",
                clientApplication.GetApplicationElement().ApplicationUriString);

            // Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
            IPkiCertificate certificate;
            try
            {
                certificate = clientApplication.ObtainNewCertificate(gdsEndpointDescriptor,
                    new Progress<string>(s => Console.WriteLine("Progress: {0}", s)));
            }
            catch (UAException uaException)
            {
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
                return;
            }

            // Display results
            Console.WriteLine("Certificate: {0}", certificate);
        }
    }
}
' Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage,
' with progress reporting.

Imports Microsoft.Extensions.DependencyInjection
Imports OpcLabs.BaseLib.Security.Cryptography.PkiCertificates
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.Application
Imports OpcLabs.EasyOpc.UA.Application.Extensions
Imports OpcLabs.EasyOpc.UA.Extensions
Imports OpcLabs.EasyOpc.UA.OperationModel

Namespace UADocExamples.Application._IEasyUAClientApplication
    Partial Friend Class ObtainNewCertificate
        Public Shared Sub Progress()

            ' Define which GDS we will work with.
            Dim gdsEndpointDescriptor As UAEndpointDescriptor =
                New UAEndpointDescriptor("opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer") _
                .WithUserNameIdentity("appadmin", "demo")

            ' Obtain the client application service.
            Dim client = New EasyUAClient()
            Dim clientApplication = client.GetService(Of IEasyUAClientApplication)()

            ' Display which application we are about to work with.
            Console.WriteLine("Application URI string: {0}",
                clientApplication.GetApplicationElement().ApplicationUriString)

            ' Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
            Dim certificate As PkiCertificate
            Try
                certificate = clientApplication.ObtainNewCertificate(gdsEndpointDescriptor,
                    New Progress(Of String)(Sub(s) Console.WriteLine("Progress: {0}", s)))
            Catch uaException As UAException
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
                Exit Sub
            End Try

            ' Display results
            Console.WriteLine("Certificate: {0}", certificate)
        End Sub
    End Class
End Namespace
Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2012 R2, Windows Server 2016; .NET Core, .NET 6: Linux, macOS, Microsoft Windows

See Also